﻿#define _CRT_SECURE_NO_WARNINGS
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p = &a;
//	printf("%zd\n",sizeof(int*));
//	printf("%zd\n", sizeof(char *));
//	printf("%zd\n", sizeof(float *));
//	printf("%zd\n", sizeof(long *));
//	printf("%zd\n", sizeof(double *));
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 0X11223344;
//	int * p = &a;
//	*p = 0;
//	printf("%d",a);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 0X11223344;
//	char * p = (char*) & a;
//	*p = 0;
//	printf("%x",a);//%x将输出转化为16进制
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int n = 10;
//	char* pc = (char*)&n;
//	int* pi = &n;
//	printf("%p\n", &n);
//	printf("%p\n", pc);
//	printf("%p\n", pc + 1);
//	printf("%p\n", pi);
//	printf("%p\n", pi + 1);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int a = 10;
//	void* pa = &a;
//	void* pc = &a;
//	*pa = 10;
//	*pc = 0;
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int* p1 = p + 2;
//	int* p2 = p + 3;
//	printf("%p", p1 + p2);
//}


//#include <stdio.h>
//int my_strlen(const char* s)
//{
//	const char* p = s;
//	while (*p != '\0')
//		p++;
//	return p - s;
//}
//int main()
//{
//	printf("%d\n", my_strlen("abc"));
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//	int* p = &arr[0];
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	while (p < arr + sz) //指针的⼤⼩⽐较 
//	{
//		printf("%d ", *p);
//		p++;
//	}
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 0;
//	a = 10;
//	const int b = 20;
//	int* p = &b;
//	*p = 30;
//	printf("%d", b);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int const* p = &a;
//	*p = 30;
//	p = &b;
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int * const p = &a;
//	*p = 30;
//	p = &b;
//	return 0;
//}

//
//#include<stdio.h>
//int main()
//{
//	int a = 10;
//	int* p;
//	*p = 30;
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[10] = {0};
//	int* p = &arr[0];
//	for (int i = 0; i <= 10; i++)
//	{
//		*(p + i) = i + 1;
//	}
//	for (int i = 0; i <= 9; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}
//#include <stdio.h>
//int* test()
//{
//	int n = 100;
//	return &n;
//}
//int main()
//{
//	int* p = test();
//	printf("hehe\n");
//	printf("%d\n", *p);
//	return 0;
//}
//#include<stdio.h>
//#include<assert.h>
//size_t my_strlen(char const* p)
//{
//	int count = 0;
//	while (*p != '\0')
//	{
//		p++;
//		count++;
//	}
//	return count;
//}
//int main()
//{
//	printf("%zd", my_strlen("abc"));
//	return 0;
//}
//#include <stdio.h>
//void Swap1(int x, int y)
//{
//	int tmp = x;
//	x = y;
//	y = tmp;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("交换前：a = %d b = %d\n", a, b);
//		Swap1(a, b);
//	printf("交换后：a = %d b = %d\n", a, b);
//		return 0;
//}
//#include <stdio.h>
//void Swap2(int* px, int* py)
//{
//	int tmp = 0;
//	tmp = *px;
//	*px = *py;
//	*py = tmp;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("交换前：a = % d b = % d\n", a, b);
//	Swap2(&a, &b);
//	printf("交换后：a = % d b = % d\n", a, b);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
//	printf("%zd\n", sizeof(arr));
//	int sz = sizeof(arr) / sizeof(arr[0]);//sz数组元素个数
//	printf("%d", sz);
//	return 0;
//}
//#include<stdio.h>
//int main()
//{
//	int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };
//	int sz = 0;
//	int* p = &arr[0];
//	while (p < (int *) ( & arr + 1))//这里的&arr是数组指针，需要强制类型转换int*
//	{
//		sz++;
//		p++;
//	}
//	printf("数组的大小是%d", sz);
//	return 0;
//}
//#include <stdio.h>
//int main()
//{
//	int arr[10] = { 0 };
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int* p = arr;
//	for (i = 0; i < sz; i++)
//	{
//		scanf("%d", p + i);
//	}
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", p[i]);
//	}
//	return 0;
//}
//#include<stdio.h>
//void test(int arr[])
//{
//	int sz2 = sizeof(arr) / sizeof(arr[0]);
//	printf("数组的大小是:%d", sz2);
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int sz1 = sizeof(arr) / sizeof(arr[0]);
//	printf("数组的大小是:%d\n", sz1);
//	test(arr);
//	return 0;
//}
//#include<stdio.h>
//void test1(int arr[])//虽然参数是数组形式但是本质是指针
//{
//	printf("%d\n",sizeof(arr));
//}
//void test2(int * arr)
//{
//	printf("%d", sizeof(arr));
//}
//int main()
//{
//	int arr[10] = { 0 };
//	int sz1 = sizeof(arr) / sizeof(arr[0]);
//	test1(arr);
//	test2(arr);
//	return 0;
//}
//冒泡排序
//#include<stdio.h>
//void my_bubble_sort(int arr[],int sz,bool change)//change决定排序是从高到低还是从低到高
//{ 
//	
//	for (int i = 0; i < sz - 1; i++)
//	{
//		bool flag = 0;//flag用来判断是否一开始是不是排序好了，一开始排序好了就不用排了
//		for (int j = 0; j < sz-1-i; j++)
//		{
//			if ((change&&arr[j] > arr[j + 1])||(!change && arr[j] < arr[j + 1]))
//			{
//				int temp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = temp;
//				flag = 1;
//			}
//		}
//		if (flag)
//		{
//			break;
//		}
//	}
//}
//void arr_print(int arr[],int sz)
//{
//	for (int i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//int main()
//{
//	int arr[10] = { 3,1,5,2,8,5,4,12,10,98 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	my_bubble_sort(arr, sz,false);
//	arr_print(arr, sz);
//	return 0;
//}
#include <stdio.h>
int main()
{
	int arr1[] = { 1,2,3,4,5 };
	char arr2[] = { 'a','b','c','d','e'};
	int arr3[] = { 3,4,5,6,7 };
	int* parr[3] = { arr1, arr2, arr3 };
	int i = 0;
	int j = 0;
	for (i = 0; i < 3; i++)
	{
		for (j = 0; j < 5; j++)
		{
			printf("%d ", parr[i][j]);
		}
		printf("\n");
	}
	return 0;
}
